package com.netty.netty;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @Author: CaiXiang
 * @Date: 2019/5/23 10:51
 * @Version 1.0
 * @Description:
 */
public class Server {
    private ServerSocket serverSocket;
    public Server(int port) throws Exception{
        try {
            this.serverSocket = new ServerSocket(port);
            System.out.println("服务端启动成功，端口："+port);

        }catch (Exception e){
            System.out.println("服务端启动失败");
        }
    }
    public void start(){
        //***在start方法里面new 了一个线程，之所以new 一个线程是因为我们不希望server程序阻塞外面的线程。所以把端口监听专门放在一个单独的线程里面。
        new Thread(new Runnable() {
            @Override
            public void run() {
                doStart();  //去做真正的客户端连接。
            }
        }).start();
    }
    private void doStart()  {
        while(true){
            try {
                Socket client = serverSocket.accept();
                new ClientHandler(client).start();
            }catch (IOException e){
                System.out.println("服务端异常");
            }
        }
    }

}
